home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / lib / perl / bit.ph < prev    next >
Encoding:
Text File  |  1991-08-12  |  1.9 KB  |  51 lines

  1. if (!defined &_BIT) {
  2.     eval 'sub _BIT {1;}';
  3.     if (!defined &_SPRITE) {
  4.     }
  5.     require 'cfuncproto.ph';
  6.     require 'bstring.ph';
  7.     eval 'sub BIT_NUM_BITS_PER_INT {32;}';
  8.     eval 'sub BIT_NUM_BITS_PER_BYTE {8;}';
  9.     eval 'sub Bit_NumInts {
  10.         local($numBits) = @_;
  11.         eval "((($numBits)+ &BIT_NUM_BITS_PER_INT -1)/ &BIT_NUM_BITS_PER_INT)";
  12.     }';
  13.     eval 'sub Bit_NumBytes {
  14.         local($numBits) = @_;
  15.         eval "( &Bit_NumInts($numBits) * $sizeof{\'int\'})";
  16.     }';
  17.     eval 'sub Bit_Alloc {
  18.         local($numBits, $bitArrayPtr) = @_;
  19.         eval "$bitArrayPtr = (\'int\' *)  &malloc(( &unsigned)  &Bit_NumBytes($numBits));  &Bit_Zero(($numBits), ($bitArrayPtr))";
  20.     }';
  21.     eval 'sub Bit_Free {
  22.         local($bitArrayPtr) = @_;
  23.         eval " &free((\'char\' *)$bitArrayPtr)";
  24.     }';
  25.     eval 'sub Bit_Set {
  26.         local($numBits, $bitArrayPtr) = @_;
  27.         eval "(($bitArrayPtr)[($numBits)/ &BIT_NUM_BITS_PER_INT] |= (1 << (($numBits) %  &BIT_NUM_BITS_PER_INT)))";
  28.     }';
  29.     eval 'sub Bit_IsSet {
  30.         local($numBits, $bitArrayPtr) = @_;
  31.         eval "(($bitArrayPtr)[($numBits)/ &BIT_NUM_BITS_PER_INT] & (1 << (($numBits) %  &BIT_NUM_BITS_PER_INT)))";
  32.     }';
  33.     eval 'sub Bit_Clear {
  34.         local($numBits, $bitArrayPtr) = @_;
  35.         eval "(($bitArrayPtr)[($numBits)/ &BIT_NUM_BITS_PER_INT] &= ~(1 << (($numBits) %  &BIT_NUM_BITS_PER_INT)))";
  36.     }';
  37.     eval 'sub Bit_IsClear {
  38.         local($numBits, $bitArrayPtr) = @_;
  39.         eval "(!( &Bit_IsSet(($numBits), ($bitArrayPtr))))";
  40.     }';
  41.     eval 'sub Bit_Copy {
  42.         local($numBits, $srcArrayPtr, $destArrayPtr) = @_;
  43.         eval " &bcopy((\'char\' *) ($srcArrayPtr), (\'char\' *) ($destArrayPtr),  &Bit_NumBytes($numBits))";
  44.     }';
  45.     eval 'sub Bit_Zero {
  46.         local($numBits, $bitArrayPtr) = @_;
  47.         eval " &bzero((\'char\' *) ($bitArrayPtr),  &Bit_NumBytes($numBits))";
  48.     }';
  49. }
  50. 1;
  51.